/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */
package jp.ize.ux.acts;

// {{{ imports
import jp.ize.ux.Util;
import jp.ize.ux.UXObject;
import jp.ize.ux.UXPoint;
import jp.ize.ux.acts.Act;
// }}}
// {{{ enum SelectActEvent {
enum SelectActEvent {
	SELECT( target : UXObject );
	DESELECT( target : UXObject );
}
// }}}
// {{{ class SelectAct extends ActSubject<SelectActEvent>
/**
 * SelectAct クラス<br>
 * 子コンポーネントの選択される動作を実現するアクションです。<br>
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
class SelectAct extends ActSubject<SelectActEvent>
{
	// {{{ properties

	private var _sa : UXObject -> Void;
	private var _da : UXObject -> Void;
	private var _exclusive : Bool;
	private var _iterp : ListStateType -> Int;

	// }}}
	// {{{ public function new()
	/**
	 * コンストラクタです。
	 * 排他的選択かどうか、選択された効果、選択されていない状態に戻す効果をパラメーターに取ります。
	 */
	public function new( exclusive : Bool, select : UXObject -> Void, deselect : UXObject -> Void )
	{
		super();
		_exclusive = exclusive;
		_sa = select;
		_da = deselect;
	}
	// }}}
	// {{{ public function select( ?select_intep : ListStateType -> Int ) : ListStateType -> Void
	/**
	 * 状態やイベントからどの子コンポーネントが対象なのかを判断する関数を引数に取り、選択状態の効果と状態の変更を行います。
	 */
	public function select( ?select_intep : ListStateType -> Int ) : ListStateType -> Void
	{
		var me = this;
		return function( state : ListStateType ) : Void {};
	}
	// }}}
}
// }}}
